<script>
    /*
          通用交易系统接入指引

               https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi
    */
    
    /*
        一、接入前准备

                    1、完成交易能力的权限申请，路径：  【控制台】--【小程序】--【能力】--【解决方案】，选择 【交易类小程序通用】，

                          一次开通下表的各类能力权限 (申请后自动审核通过)

                            ①、 通用交易系统 OpenAPI 接口能力（调用交易系统 API 的必需条件）

                            ②、 通用交易系统退款扩展点（用于接收退款申请回调）

                            ③、 通用交易系统支付消息（用于接收支付成功回调）

                            ④、 通用交易系统退款消息（用于接收退款结果回调）

                            ⑤、 通用交易系统分账消息（用于接收分账结果回调）

                    2、等待 5 分钟后在「控制台-小程序-开发-解决方案配置」下配置回调地址

                    3、回到上一级页面点击「发布上线」。
    */

    /*
        二、关键节点


                           关键节点                      说明 

                        ①、商户进件                 该环节是使用交易能力的前提，进件是开通支付账户的过程
                                                   ★、说明

                                                           之前已接入过担保支付或行业交易系统的开发者/服务商，无需再做进件。
                                                           
                        ②、交易下单                 可通过此接口，完成交易下单及支付，留存订单相关信息

                        ③、交易履约                 1、通用交易系统梳理了不同行业的各关键业务节点，将其映射为抽象的履约状态，同时规定了这些状态之间的流转规则 

                                                   2、根据接入规范，对于需要接入履约同步的商品类型，开发者需搭配调用弹窗组件或履约状态同步 API，将服务交付过程同步至平台

                                                   3、对于需要接入履约同步的商品类型，履约状态，是平台判定退款规则和可结算时机的关键信息。

                        ④、交易退款                 开发者可对接平台提供的发起退款 API，用户也可以通过平台统一入口发起退款，因此均需对接回调扩展点及审核接口，接受用户多端退款请求。
                                                     
                                                      1、若为开发者发起退款，无需商户审核，平台均会做默认同意退款处理

                                                      2、当用户直接向平台发起退款时，平台将基于以下逻辑对订单流转情况进行判定：

                                                            a、校验订单当前履约状态（数据来源于交易履约服务同步的状态机）

                                                            b、依据交易规则约定的该履约状态下是否可退或是否需要开发者审核

                                                    综合确定订单的后续处理流程。

                        ⑤、交易结算与分账            1、对于有履约流程的交易，当履约状态到达履约完成后，可发起结算请求(或配置自动结算)，结算账期详 "见接入规范"
                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/trade-system/guide/general/basicrules#cecdd77d%E6%8E%A5%E5%85%A5%E8%A7%84%E8%8C%83

                                                    2、如有分账诉求，则可通过该接口将分账列表传入。此时扣除分账的资金及平台的技术服务费后，剩余资金到商户的可提现账户

                        ⑥、退分账                    开发者发起分账后，如果发生退款，可以从已分账方退回分账到商户可提现账户
                                                    只支持外部分账方的退分账，不支持平台抽佣、手续费等退分账

                        ⑦、获取对账单                开发者可定期获取平台提供的对账单进行对账
    */

    /*
        三、各环节说明

                      1、商户进件

                                先参照支付进件企业版 (原担保支付企业版)， 进件环节流程一致，API一次文档下的API为准。
                                        https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/guaranteed-payment/guide/merchant-E

                                若已接入过担保支付或行业交易系统，则可跳过 "进件" 环节

                                如需要开发测试阶段与生产环境数据隔离，可以新增商户号，新商户号作为测试商户号，正式使用的商户号不会受到测试数据影响。

                      2、交易下单

                                        <1>、开发步骤

                                                仅需两步：

                                                        ①、使用  tt.requestOrder 发起下单
                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/industry/general_trade/create_order/requestOrder

                                                        ②、使用 tt.getOrderPayment 来气收银 台进行支付。
                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/industry/general_trade/create_order/getOrderPayment


                                        <2>、收款模式 (可选阅读)

                                                    模式                 说明

                                                    1、默认收款模式        每个小程序开通的第一个商户号(即最后一位为0的商户号) 为小程序的默认收款商户号。

                                                                        开发者在调用预下单接口时，无需传入收款商户号，商户系统会根据小程序 appid 默认匹配尾号为 0 的商户号进行收款。

                                                    2、多门店模式          随着小程序业务发展，默认收款模式无法满足部分小程序的需求，一个小程序下的不同商品可能需要通过不同商户号收款，于是衍生出多门店收款模式。
                                                                        如果有多门店收款需求，请联系客服提供小程序 appid 添加多门店白名单。
                                                                        加入白名单后，开发者可以在下单环节在 merchantUid 字段将本单要使用的商户号传入，以实现不同商品/不同订单收款到不同商户号的诉求。
                                                                        ★、注意：

                                                                                如果小程序appid 不在白名单内，则无法使用多门店模式。

                                        <3>、调用时序

                                                    图示：

                                                            (时序图为嵌入的图标，请到文档中查看)

                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi

                                                        ①、开发者/服务商需先调用 tt.requestOrder ，下单获取来气收银台的相关参数，可通过 "查询标签组信息" 服务，查询可传入的标签组ID (tag_group_id)

                                                        ②、开发者/服务商调用 tt.getOrderPayment 拉起收银台，用户可在收银台上选择支付方式并确认支付，收银台上展示的支付公域与商户开通的支付方式一致。

                                                        ③、用户支付后，平台会通过 "支付结果回调" 告知开发者/服务商支付结果，但回调可能存在延迟或丢失。
                                                                该笔交易付款是否成功，建议开发者/服务商的服务端以主动 "查询订单信息" 为准。

                     3、履约同步

                                        <1>、背景说明

                                                    ①、先参考 "接入规范" ，确认所接的商品类型是否需要接入履约，如不需要可跳过此环节。
                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/trade-system/guide/general/basicrules#bc5f59bc

                                                    ②、通用交易系统梳理的不同行业的关键业务节点，将其映射为抽象的履约状态，同时规定了这些状态之间的流转规则。

                                                    ③、开发者需要参考 "这套规则"，使用通用交易系统提供的履约同步模式，将订单的履约同步给平台。
                                                                https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/trade-system/guide/general/basicrules#bc5f59bc

                                                    ★、注意：

                                                            平台会根据履约状态，判断订单退款时的可退金额，以及订单的可结算时间。

                                        <2>、履约同步模式

                                                    ①、模式一：  tt.confirmFulfillment ,拉起平台统一服务确认弹窗
                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/industry/general_trade/trade_fulfill/confirmFulfillment

                                                            △、作用： 来气平台提供的服务确认组件，引导用户确认关键服务交付节点 (如：'履约完成')，从而驱动平台订单的状态推进。

                                                            △、接入： 根据 "接入规范" ，查看是否需要接入、以及在哪个业务流程引入 tt.confirmFulfillment 

                                                    ②、模式二：  通过 "推送履约状态"，由开发者同步

                                                            △、作用：  将履约状态同步给平台，驱动平台订单的状态推进，达到关键节点 (如 '履约中')

                                                            △、接入： 根据 "接入规范"  ，查看是否需要接入，以及在哪个业务流程调用履约同步 OpenAPI

                                        <3>、调用时序

                                                    图示：

                                                        (嵌入式图标，请到文档中查看)

                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi


                    4、交易退款

                                        <1>、退款入口

                                                    具体交互可参考 "能力介绍" https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/trade-system/guide/general/aboutbasic#650b1013

                                                        ①、选择一： 
                                                                 用户直接向开发者发起退款。用户在小程序内发起退款申请。

                                                        ②、选择二：
                                                                用户直接向平台发起退款。  
                                                                用户从小程序右上角 [反馈] 入口，选择进入 [申请退款] 页面 (注： 但因App最低支持版本为 27.0.0)。
                                                                退款订单列表页将根据订单所属退款规则标签与订单履约状态，判断用户是否可发起此笔订单退款，及退款是否需要开发者发起审核。

                                        <2>、调用时序

                                                (1)、场景一： 用户提交申请，向开发者发起退款

                                                            ★、注意：  

                                                                    由开发者想凭条发起的退款，凭条不判断订单履约状态即标签规则，均直接受理退款申请，且异步指定退款。

                                                        ①、 开发者虚调用 "发起退款" 接口，该接口会同步响应退款申请的受理结果。
                                                                        https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/trade-system/general/refund/create_refund

                                                        ②、凭条处理渠道退款结果后， "返回最终退款结果"。
                                                                        https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/trade-system/general/refund/refund_notify

                                                                图示：

                                                                    (嵌入式图标，请到文档中查看)

                                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi


                                                (2)、场景二：  用户提交申请，由平台直接发起退款

                                                        ①、用户在平台统一入口发起退款(详见"交易退款入口")  
                                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/trade-system/general/basicapi#ab464ebc

                                                        ②、平台收到退款申请后，根据订单的履约状态及 "标签规则"，判定是否允许退款，若不允许退款则拒绝申请。
                                                                            https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/trade-system/guide/general/basicrules#44f4a391

                                                        ③、退出申请受理后，平台将向开发者发起退款申请回调，开发者收到回调后，同步返回相关信息 (若 72 小时候后开发者仍未成功响应，系统会自动通过)

                                                                 △、若此笔订单对应的规则为需要商家审核，开发者需要 "接入同步审核结果" 接口告知平台退款审核结果。

                                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/trade-system/general/refund/refund_audit

                                                                        平台接收到审核结果为审核通过后，开始执行退款操作，"并通知最终的退款结果"。
                                                                         
                                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/trade-system/general/refund/refund_notify

                                                                 △、若此笔订单对应的规则为无需审核，平台将直接执行退款，"并通知最终的退款结果"
                                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/trade-system/general/refund/refund_notify

                                                ★、时序图：

                                                            (嵌入式图标，请到文档中查看)

                                                                    https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi


                    5、交易结算以及之后环节

                                先参照：  "支付进件企业版(原担保支付企业版)"

                                                https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/guaranteed-payment/guide/merchant-E
                                                                            

    */

    /*
        四、开始开发

                            各个环节的接口、介绍

                            (表格。。。。比较多，看文档吧)

                                        https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/open-capacity/business-monetization/guaranteed-payment/general/basicapi        
    */
</script>